import { defineStore } from 'pinia'
import { Profile } from '@/types/user'
import { ApiRes } from '@/types/data'
import request from '@/utils/request'
import { getProfile, setProfile, removeProfile } from '@/utils/storage'

export default defineStore('user', {
  state() {
    return {
      // 本地取
      profile: getProfile(),
    }
  },

  actions: {
    //定义一个用户名 密码登录的方法
    async login(account: string, password: string) {
      const res = await request.post<ApiRes<Profile>>('/login', {
        account,
        password,
      })

      // console.log(res)
      this.profile = res.data.result
      // 本地存储
      setProfile(res.data.result)
    },

    // 获取手机验证码
    async sendMobileMsg(mobile: string) {
      // 就是不会给你结果
      await request.get('/login/code', {
        params: {
          mobile,
        },
      })

      // console.log(res)
    },

    // 手机号登录的请求方法
    async mobileLogin(mobile: string, code: string) {
      const res = await request.post<ApiRes<Profile>>('/login/code', {
        mobile,
        code,
      })
      // 1. 保存用户信息到 state 中
      this.profile = res.data.result
      // 本地存储
      setProfile(res.data.result)
    },

    // 清除个人信息(pinia  本地)
    logout() {
      this.profile = {} as Profile
      removeProfile()
    },
  },
})
